home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / BASIC / AINFO.BAS < prev    next >
BASIC Source File  |  2000-09-26  |  3KB  |  139 lines

  1. $INCLUDE "REGNAMES.INC"
  2. COLOR 14
  3.  
  4. IF CheckVector(&H49)=0 THEN
  5.  SOUND 2000,2
  6.  PRINT "FEHLER: ATUtilities File Transfer ist nicht installiert!"
  7.  GOTO ende
  8. END IF
  9. GOSUB CmdAuswertung
  10.  
  11. REG %AX,(&H6*256)
  12. CALL INTERRUPT &H49
  13. segment=REG(%ES)
  14. offset=REG(%DI)
  15. DEF SEG = segment
  16.  
  17. a$=a$+CHR$(0)
  18. FOR i=1 TO LEN(a$)
  19.  POKE offset+i-1,ASC(MID$(a$,i,1))
  20. NEXT
  21. REG %AX,(12*256)
  22. CALL INTERRUPT &H49
  23. IF REG(%BX)=10000 THEN
  24.  fl=REG(%CX)
  25.  REG %AX,(14*256)
  26.  REG %BX,fl
  27.  CALL INTERRUPT &H49
  28.  IF REG(%BX)=10000 THEN
  29.   i=PEEK(offset) : j=1
  30.   PRINT "Laufwerks-Bezeichnung: ";
  31.   COLOR 11
  32.   WHILE i<>ASC(":") AND j<20
  33.    PRINT CHR$(i);
  34.    i=PEEK(offset+j)
  35.    j=j+1
  36.   WEND
  37.   PRINT ":"
  38.   PRINT ""
  39.   COLOR 14
  40.   REG %BX,fl
  41.   REG %AX,(15*256)
  42.   CALL INTERRUPT &H49
  43.   IF REG(%BX)=10000 THEN
  44.    COLOR 14 : PRINT "Soft-Fehler: "; : COLOR 11 : PRINT PEEKI(offset+0)
  45.    COLOR 14 : PRINT "Unit-Nummer: "; : COLOR 11 : PRINT PEEKI(offset+4)
  46.    total&=PEEKL(offset+12)
  47.    used&=PEEKL(offset+16)
  48.    free&=total&-used&
  49.    p.free=100&*free&/total&
  50.    p.used=100&*used&/total&
  51.    bytes&=PEEKL(offset+20)
  52.    PRINT ""
  53.    COLOR 14 : PRINT "Freier Speicherplatz:" : COLOR 11
  54.    PRINT free&;"Bl”cke"
  55.    PRINT free&*bytes&/1024&;"KBytes"
  56.    PRINT p.free;"%"
  57.    PRINT ""
  58.    COLOR 14 : PRINT "Belegter Speicherplatz:" : COLOR 11
  59.    PRINT used&;"Bl”cke"
  60.    PRINT used&*bytes&/1024&;"KBytes"
  61.    PRINT p.used;"%"
  62.    PRINT ""
  63.    COLOR 14 : PRINT "Speicherkapazit„t gesamt:" : COLOR 11
  64.    PRINT total&;"Bl”cke"
  65.    PRINT total&*bytes&/1024&;"KBytes"
  66.    PRINT ""
  67.    SELECT CASE PEEKL(offset+8)
  68.     CASE 80
  69.      s$="Schreibschutz aktiv"
  70.     CASE 81
  71.      s$="Probleme mit Speichermedium (Validating-Zustand)"
  72.     CASE ELSE
  73.      s$="Speichermedium kann beschrieben und gelesen werden"
  74.    END SELECT
  75.    COLOR 14 : PRINT "Laufwerksstatus: "; : COLOR 11 : PRINT s$
  76.    COLOR 14 : PRINT "Diskettentyp:    "; : COLOR 11
  77.    type=PEEKL(offset+24)
  78.    FOR i=27 TO 24 STEP -1
  79.     s$=CHR$(PEEK(offset+i))
  80.     IF s$>="A" AND s$<="Z" THEN PRINT s$; ELSE PRINT " "
  81.    NEXT
  82.    PRINT ""
  83.   ELSE
  84.    SOUND 2000,2
  85.    PRINT "FEHLER: Informationen k”nnen nicht ermittelt werden."
  86.   END IF
  87.  ELSE
  88.   SOUND 2000,2
  89.   PRINT "FEHLER: Laufwerksname kann nicht ermittelt werden."
  90.  END IF
  91.  
  92.  REG %AX,(13*256)
  93.  REG %BX,fl
  94.  CALL INTERRUPT &H49
  95. ELSE
  96.  SOUND 2000,2
  97.  PRINT "Laufwerk existiert nicht/Zugriff verweigert."
  98. END IF
  99.  
  100. ende:
  101. COLOR 7
  102. END
  103.  
  104. CmdAuswertung:
  105. cmd$=COMMAND$
  106. a$=cmd$
  107. IF a$="/?" OR a$="?" THEN
  108.  GOTO argf
  109. END IF
  110. IF a$="" THEN
  111.  a$=STRING$(20,CHR$(0))
  112. END IF
  113. RETURN
  114.  
  115. argf:
  116. SOUND 2000,2
  117. PRINT "AInfo - Version 1.0  Copyright (C) 1993 by Thomas Dreibholz"
  118. PRINT ""
  119. PRINT "AInfo zeigt eine Informationstabelle ber das angegebene Laufwerk an."
  120. PRINT "Wird kein Laufwerk angegeben, so wird das aktuelle benutzt."
  121. PRINT ""
  122. PRINT "Aufruf: AInfo {Laufwerk | /? | ?}"
  123. PRINT ""
  124. GOTO ende
  125.  
  126.  
  127. FUNCTION CheckVector(num) STATIC
  128.  REG %AX,(&H35*256)+num
  129.  CALL INTERRUPT &H21
  130.  segm=REG(%ES)
  131.  offs=REG(%BX)
  132.  DEF SEG = segm
  133.  IF (segm=0) OR (PEEK(offs)=207) THEN
  134.   CheckVector=0
  135.  ELSE
  136.   CheckVector=1
  137.  END IF
  138. END FUNCTION
  139.